﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp4
{
    class Program
    {
//        静态字段存储的值在所有实例化之间是共享的。

//作业：
//现在开班了，班里老师只有一个，叫唐僧。班里的五个人都知道老师叫唐僧(也就是说老师这个字段是共享的)。但是某一天唐僧要去女儿国走丈母娘家了，课不能停啊。所以就请嫦娥姐姐过来带一段课。

//现在5个学生都知道老师换成嫦娥姐姐了，都很激动哈。但是她们是怎么都知道换老师的呢？还是这个静态字段的功劳，将老师姓名声明为静态字段，这个字段是共享的。所以该类的属性都能知道。

//请用代码写出上面的剧情。

//提示：
//定义一个学生类（有哪些字段属性？修饰符是什么？自己考量定义，至少学生姓名要吧），定义一个有参构造方法用来初始化学生姓名。学生类中定义一个成员方法，用来输出学生的信息。

//Main方法中，创建5个学生对象，每个学生执行输出学生信息的方法。
//学生的老师变更，
//再执行每个学生执行输出学生信息的方法。
        static void Main(string[] args)
        {
            Student stu = new Student(123,"张三",'男',"唐僧");
            Student stu1 = new Student(456, "李三", '男', "唐僧");
            Student stu2 = new Student(789, "王三", '女', "唐僧");
            Student stu3 = new Student(147, "曹三", '男', "唐僧");
            Student stu4 = new Student(258, "赵三", '女', "唐僧");
            stu.SayHi();
            stu1.SayHi();
            stu2.SayHi();
            stu3.SayHi();
            stu4.SayHi();
            Console.WriteLine("更改后：");
            Student.Teacher = "嫦娥";
            stu.SayHi();
            stu1.SayHi();
            stu2.SayHi();
            stu3.SayHi();
            stu4.SayHi();
        }
    }
    class Student
    {
        public int Num { get; set; }
        public string Name { get; set; }
        public char Sex { get; set; }
        public static string Teacher { get; set; }

        public Student(int num ,string name ,char sex ,string teacher) 
        {
            this.Num = num;
            this.Name = name;
            this.Sex = sex;
            Teacher = teacher;
        }
        public void SayHi() 
        {
            Console.WriteLine("我的名字是{0}，我的学号是{1}，我是{2}的，我的老师是{3}。", this.Name, this.Num, this.Sex ,Teacher);
        }
    }
}
